package com.rmfyzxfw.caseprocess.service;

import com.rmfyzxfw.caseprocess.boot.result.page.Pagination;
import com.rmfyzxfw.caseprocess.model.cmd.*;
import com.rmfyzxfw.caseprocess.model.param.CaseProcessDataNodeDataParam;
import com.rmfyzxfw.caseprocess.model.param.ProcessListParam;
import com.rmfyzxfw.caseprocess.model.po.Process;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rmfyzxfw.caseprocess.model.vo.*;

import java.util.List;

/**
* @author GYW
* @description 针对表【t_process(流程)】的数据库操作Service
* @createDate 2024-08-14 16:11:02
*/
public interface ProcessService extends IService<Process> {

    /**
     * 新增流程
     * @param cmd
     */
    void addProcess(ProcessCmd cmd);

    /**
     * 编辑流程
     * @param cmd
     */
    void editProcess(ProcessEditCmd cmd);

    /**
     * 获取流程信息
     * @param processId
     * @return
     */
    ProcessVO getProcessInfo(String processId);

    /**
     * 获取流程配置数据
     *
     * @param processDataId
     * @return
     */
    List<ProcessNodeVO> getProcessConfigData(String processDataId);

    /**
     * 流程列表
     * @param param
     * @return
     */
    Pagination<ProcessListVO> processList(ProcessListParam param);

    void processConfig(ProcessConfigCmd cmd);

    void processEnable(ProcessEnableCmd cmd);

    /**
     * 获取案件的所有流程数据的信息
     *
     * @param cmd
     * @return
     */
    ProcessStatusVO updateAndGetStatus(CaseProcessStatusCmd cmd);

    CaseProcessDataNodeDataVO getDataNodeData(CaseProcessDataNodeDataParam param);

    void manageProcess(ProcessManageCmd cmd);

    void updateAllCaseStatus();

    void updateSingleCaseStatus(SingleCaseUpdateCmd cmd);
}
